In some communication systems, a client device (e.g., a Personal Computer) may communicate over a wired or wireless network with a server. For example, the server may include a processor, a Network Interface Card (NIC), a short-term memory unit (e.g., Random Access Memory (RAM)), and a long-term storage unit (e.g., a hard disk drive).
The server may receive from the client device a request to read data from the long-term storage unit. In response, the requested data is copied (e.g., by the processor) from the long-term storage unit into the short-term storage unit; and the NIC of the server then reads the requested data from the short-term memory unit and sends it over the network to the client device.
Unfortunately, this process may result in a relatively slow flow of data. For example, the long-term memory unit may include mechanically moving parts, and may operate relatively slowly. Additionally, the server may be required to serve multiple client devices, and incoming requests may be placed into one or more queues, which need to be managed and handled. Furthermore, the requested data is copied into the short-term memory unit of the server, thereby consuming time and/or processing power.